package com.czmh.etc.onlinepubsys.request.cmg;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.czmh.etc.common.core.utils.Sequence;
import com.czmh.etc.onlinepubsys.constants.mingchuang.CertifiType;
import com.czmh.etc.onlinepubsys.entity.mingchuang.ApplyInfo;
import com.czmh.etc.onlinepubsys.request.mingchuang.ApplyExtInfo;
import com.czmh.etc.onlinepubsys.request.mingchuang.EtcApplyReqest;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * Copyright (C), 2023
 *
 * @Author lyk
 * Date: 2023/07/04
 * FileName: NewAddCustomerInfoRequest
 * Description:
 */
@ApiModel("招商局-预录入ETC客户信息-对接请求对象")
@Data
public class NewAddCustomerInfoRequest {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty("用户ID")
    @JSONField(serialize = false)
    private String userId; //用户ID

    @ApiModelProperty("订单id")
    @JSONField(serialize = false)
    private String orderId; //订单id

    @ApiModelProperty(notes = "业务流水号,SPI合作服务商定义业务流水号,规则:渠道号+渠道方唯一编码", required = true)
    private String businessFlowNo;

    @ApiModelProperty(notes = "证件号", required = true)
    private String idNum;

    @ApiModelProperty(notes = "证件类型：0-身份证； 1-军官证；2-护照；3-港澳通行证；4-台湾通行证 5-营业执照；6-组织机构代码证；7-社会团体法人 8-社会信用代码 9-事业单位法人 10-律师事务所许可证", required = true)
    private Integer idType;

    @ApiModelProperty(notes = "时间戳", hidden = true)
    private Long time;

    @ApiModelProperty(notes = "授权访问平台终端渠道编号,招商畅行卡微信小程序:5713498500")
    private String toAuthAccessNo;

    @ApiModelProperty(notes = "跳转招商平台客户端id，获取招商公众服务平台访问令牌接口中获取")
    private String toClientKey;

    @ApiModelProperty(notes = "地址")
    private String address;

    @ApiModelProperty(notes = "单位开户行")
    private String bank;

    @ApiModelProperty(notes = "开户行账号")
    private String bankAccount;

    @ApiModelProperty(notes = "开户行地址")
    private String bankAddr;

    @ApiModelProperty(notes = "单位类型:1-政府机关 2-事业单位 3-国有企业4-外资企业 5-民营企业 6-其他只有客户类型为单位才有意义")
    private Integer companyType;

    @ApiModelProperty(notes = "邮箱")
    private String email;

    @ApiModelProperty(notes = "固定电话,非必填")
    private String fixedTel;

    @ApiModelProperty(notes = "发票抬头")
    private String invoiceUnit;

    @ApiModelProperty(notes = "是否允许用户在招商平台应用修改idNum、idType、tel,0-不允许 1-允许,设置不允许时，招商平台应用此次业务流程将限制用户修改, 默认允许修改,示例值(1)")
    private Integer isLimitModifyKey;

    @ApiModelProperty(notes = "客户姓名")
    private String name;

    @ApiModelProperty(notes = "账户名称")
    private String accountName;

    @ApiModelProperty(notes = "证件图片1,图片使用Base64编码字符串，大小不超过300k（不包含图片头，如data:image/jpg;base64,）")
    private String picData;

    @ApiModelProperty(notes = "证件图片2,图片使用Base64编码字符串，大小不超过300k（不包含图片头，如data:image/jpg;base64,）")
    private String picData2;

    @ApiModelProperty(notes = "证件图片3,图片使用Base64编码字符串，大小不超过300k（不包含图片头，如data:image/jpg;base64,）")
    private String picData3;

    @ApiModelProperty(notes = "纳税人识别号")
    private String taxpayerCode;

    @ApiModelProperty(notes = "手机号码")
    private String tel;

    @ApiModelProperty("证件类型 值见附录")
    private Integer certifiType = CertifiType.CERTIFI_TYPE_ID; //证件类型

    @ApiModelProperty("证件号")
    private String certifiNo; //证件号

    @ApiModelProperty("用户类型 0-个人 1-企业")
    private Integer ownerType; //用户类型 0-个人 1-企业

    @ApiModelProperty("手机号码")
    private String mobile; //手机号码


    @ApiModelProperty("部门/分公司 个人写测试 单位写开发")
    private String department; //部门/分公司

    @ApiModelProperty("经办人姓名 企业用户必填")
    private String agentName; //经办人姓名

    @ApiModelProperty("经办人证件类型 企业用户必填")
    private Integer agentIdType; //经办人证件类型

    @ApiModelProperty("经办人证件号 企业用户必填")
    private String agentIdNum; //经办人证件号

    @ApiModelProperty("单位证件照url 调用文件上传接口返回 企业用户必填")
    private String certImg; //单位证件照url

    private String enterpriseName; //企业名称

    private String enterpriseNo; //营业执照号

    @ApiModelProperty("证件正面照url 调用文件上传接口返回")
    private String agentFrontImg; //证件正面照url

    @ApiModelProperty("证件背面照url 调用文件上传接口返回")
    private String agentBackImg; //证件背面照url

    @TableField("附加信息请求参数")
    @JSONField(serialize = false)
    private ApplyExtInfo applyExtInfo;//用于存放额外的信息，例如阿里云图片
}
